﻿#pragma once

#include "Core.h"
#include "SourceCode/Events/Event.h"

namespace Hazal
{
	class HZ_DLL_OPTION CLayer
	{
	public:
		CLayer(const std::string& strDebugName = "Layer");

		virtual ~CLayer();

	public:
		virtual void OnAttach() {}
		
		virtual void OnDetach() {}
		
		virtual void OnUpdate(float fTimeSpan) {}
		
		virtual void OnEvent(CEvent& event) {}

		virtual void OnImGuiRender() {}

		inline const std::string& GetName() const { return m_strDebugName; }

	protected:
		std::string m_strDebugName;	///< 调试名称
	};

}
